package com.briup.day14;

import java.io.*;
import java.time.LocalDateTime;

public class Homework2 {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        // 编程实现：如果现在有一款只能试用30天的软件，
        // 超过30天之后就需要提醒用户购买正版软件。
        File file = new File("试用30天.txt");
        if (file.exists()) {
            // 文件存在，则读取该文件内的时间
            ObjectInputStream ois = new ObjectInputStream(
                    new FileInputStream(file)
            );
            // 获取软件试用到期时间，与当前时间进行比较
            LocalDateTime dateTime = (LocalDateTime) ois.readObject();
            LocalDateTime now = LocalDateTime.now();
            if (now.isAfter(dateTime)) {
                System.out.println("您的试用机会已用完，请前往xxx支持正版软件！！！");
            } else {
                System.out.println("欢迎使用XXX软件，您当前还能试用%s天！");
            }
        } else {
            LocalDateTime now = LocalDateTime.now();
            System.out.println("欢迎使用XXX软件，您当前还能试用30天！");
            // 计算30天之后的日期
            LocalDateTime dateTime = now.plusDays(30);
            ObjectOutputStream oos = new ObjectOutputStream(
                    new FileOutputStream(file)
            );
            oos.writeObject(dateTime);
        }
    }

    private static void test() throws IOException {
        // 编程实现：如果现在有一款只能试用10次的软件，
        // 超过10次之后就需要提醒用户购买正版软件。
        // （程序运行一次，使用次数就要减一次）
        File file = new File("试用.txt");
        // 判断文件是否存在，如果文件存在，说明用户使用过该软件，
        // 读取文件中写入到剩余试用次数
        if (file.exists()) {
            // 读取文件
            try (DataInputStream dis = new DataInputStream(
                    new FileInputStream(file)
            )) {
                int i = dis.readInt();
                if (i > 0) {
                    System.out.printf("欢迎试用XXX软件，您当前还剩%s次试用机会！", --i);
                    store(file, i);
                } else {
                    System.out.println("您的试用机会已用完，请前往xxx支持正版软件！！！");
                }
            }
        } else {
            // 如果文件不存在，说明用户没有使用过该软件，提醒用户还有几次使用机会
            // 并且创建试用文件，将结果写出
            System.out.println("欢迎使用XXX软件，您当前还剩9次试用机会！");
            store(file, 9);
        }
    }

    private static void store(File file, int n) throws IOException {
        try (DataOutputStream oos = new DataOutputStream(
                new FileOutputStream(file)
        )) {
            oos.writeInt(n);
            oos.flush();
        }
    }
}
